var schedule = require('node-schedule');
var { messageTimerSend, sendmsg_auto, initUnionID } = require('../services/wechat');
var { timerUpdateInvistcode,validatePeopleInfo } = require('../services/people');
var { timerMatchInvistcode } = require('../services/matchhistory');
var { dailyDone, clearDailyUser } = require('../services/dailyuser');
var { insertOrder,signAll } = require('../services/order');
var { initWaterMark } = require('../services/ossfile');
var { formatDate } = require('../libs/common');
const logger = require('../libs/log').logger;

// 每10分钟执行一次订阅消息未发送成功处理
const timerSendMsg = function(){
    schedule.scheduleJob('*/10 * * * *', function(){
        // if (process.env.NODE_APP_INSTANCE === '0') {
            console.log('现在时间：',new Date(),'开始执行一次订阅消息未发送成功处理'+process.env.NODE_APP_INSTANCE);
            logger.info('现在时间：',new Date(),'开始执行一次订阅消息未发送成功处理'+process.env.NODE_APP_INSTANCE);
            messageTimerSend();
        // }
    });
}

// 每5分钟执行推荐人code更新
const timerInvistcode = function(){
    schedule.scheduleJob('*/5 * * * *', function(){
        // if (process.env.NODE_APP_INSTANCE === '0') {
            console.log('现在时间：',new Date(),'开始执行一次推荐人code更新'+process.env.NODE_APP_INSTANCE);
            logger.info('现在时间：',new Date(),'开始执行一次推荐人code更新'+process.env.NODE_APP_INSTANCE);
            timerUpdateInvistcode();
            timerMatchInvistcode();
        // }
    });
}

// 每30分钟同步一下公众号用户关注状态
const timerSyncUnionID = function(){
    schedule.scheduleJob("*/30 * * * *", function(){
        // if (process.env.NODE_APP_INSTANCE === '0') {
            console.log('现在时间：',new Date(),'开始同步一下公众号用户关注状态'+process.env.NODE_APP_INSTANCE);
            logger.info('现在时间：',new Date(),'开始同步一下公众号用户关注状态'+process.env.NODE_APP_INSTANCE);
            initUnionID(null);
        // }
    });
}

// 每天上午9点发送每日推荐提醒
const timerSendPeople = function(){
    schedule.scheduleJob('0 9 * * *', function(){
        // if (process.env.NODE_APP_INSTANCE === '0') {
            console.log('现在时间：',new Date(),'开始推送一次置顶单身用户'+process.env.NODE_APP_INSTANCE);
            logger.info('现在时间：',new Date(),'开始推送一次置顶单身用户'+process.env.NODE_APP_INSTANCE);
            sendmsg_auto();
        // }
    });
}

// 每天上午8：55：0点自动生成次日推荐用户
const timerInitDailyUser = function(){
    schedule.scheduleJob('50 8 * * *', function(){
        // if (process.env.NODE_APP_INSTANCE === '0') {
            console.log('现在时间：',new Date(),`开始自动生成推荐用户--${formatDate(new Date())}`+process.env.NODE_APP_INSTANCE);
            logger.info('现在时间：',new Date(),`开始自动生成推荐用户--${formatDate(new Date())}`+process.env.NODE_APP_INSTANCE);
            dailyDone(null);
        // }
    });
}
// 每天上午8：55：0点自动推送参加活动用户
const timerSendActiveUser = function(){
    schedule.scheduleJob('55 8 * * *', function(){
        // if (process.env.NODE_APP_INSTANCE === '0') {
            console.log('现在时间：',new Date(),`开始自动推送参加活动用户--${formatDate(new Date())}`+process.env.NODE_APP_INSTANCE);
            logger.info('现在时间：',new Date(),`开始自动推送参加活动用户--${formatDate(new Date())}`+process.env.NODE_APP_INSTANCE);
            signAll(1);
        // }
    });
}
// 每天11：45:0系统自动检测用户信息完整度，不完整的发消息提醒
const validatepeopleinfo = function(){
    schedule.scheduleJob('45 11 * * *', function(){
        // if (process.env.NODE_APP_INSTANCE === '0') {
            console.log('现在时间：',new Date(),`开始自动检测用户信息完整度--${formatDate(new Date())}`+process.env.NODE_APP_INSTANCE);
            logger.info('现在时间：',new Date(),`开始自动检测用户信息完整度--${formatDate(new Date())}`+process.env.NODE_APP_INSTANCE);
            validatePeopleInfo();
        // }
    });
}
// 每天23:00自动清理每日推荐数据-清空10天之前的
const clearDailyuser = function(){
    schedule.scheduleJob('0 23 * * *', function(){
        // if (process.env.NODE_APP_INSTANCE === '0') {
            console.log('现在时间：',new Date(),`开始自动清理每日推荐数据-清空10天之前的--${formatDate(new Date())}`+process.env.NODE_APP_INSTANCE);
            logger.info('现在时间：',new Date(),`开始自动清理每日推荐数据-清空10天之前的--${formatDate(new Date())}`+process.env.NODE_APP_INSTANCE);
            clearDailyUser();
        // }
    });
}

// 设置定时任务
const TimerTaskAuto = function(){
    // timerSendMsg();
    timerSendPeople();
    // timerInvistcode();
    timerSyncUnionID();
    timerInitDailyUser();
    validatepeopleinfo();
    clearDailyuser();
    // timerSendActiveUser();
}

module.exports = function () {
    TimerTaskAuto();
    initWaterMark()
}